package com.tedu.api.thread;

/**
 * 软件---多个或者一个进程【理解：工厂】---很多线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类创建线程
 *     1类继承Thread线程类
 *     2run方法--线程功能
 *     3start方法--启动线程
 *     优点：使用比较方便，拓展性比较弱，继承线程，无法继承其他类【java类单继承】
 *     子类继承Thread  ，重写run方法，不利于线程复用
 *
 *
 * 2.Runnable接口---创建线程，编写步骤：
 *  1子类实现Runnable接口  必须实现run方法
 *  2 Runnable父类引用指向子类【没有start方法】
 *  3创建Thread类，Runnable对象传入Thread构造器中
 *  4 启动线程【start方法】
 *
 * 3.匿名内部类方式---Lambda表达式
 *
 */
public class RunnableAPI {
    public static void main(String[] args) {
     //2.Runnable父类引用指向子类:多态  造型
        Runnable r=new MyRunnable();
        //线程启动必须是：start方法
        //3.创建Thread类--Runnable对象传入Thread构造器中
        Thread t1=new Thread(r);
        //4.启动线程
        t1.start();
        //练习：Runnable实现创建线程---
        Runnable r1=new MyRunnable();
        Thread t2=new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i=0;i<1000;i++){
                    System.out.println("lll啦啦啦~");
                }
            }
        });
        t2.start();
    }
}
//1.子类实现Runnable并且重写run方法
class MyRunnable implements  Runnable{
    //专门线程--提供功能方法  run()
    public void run(){
    for (int i=0;i<1000;i++){
        System.out.println("啵啵啵~");
    }
    }
}
